// 合并两个有序数组

// 双指针
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int sorted[m + n];
        int begin1 = 0, begin2 = 0;
        int index = 0;
        while(begin1 < m && begin2 < n)
        {
            if(nums1[begin1] < nums2[begin2])
            {
                sorted[index++] = nums1[begin1++];
            }
            else if(nums1[begin1] == nums2[begin2])
            {
                sorted[index++] = nums1[begin1++];
                sorted[index++] = nums2[begin2++];
            }
            else
            {
                sorted[index++] = nums2[begin2++];
            }
        }
        if(begin1 == m)
        {
            while(begin2 < n)
            {
                sorted[index++] = nums2[begin2++];
            }
        }
        if(begin2 == n)
        {
            while(begin1 < m)
            {
                sorted[index++] = nums1[begin1++];
            }
        }

        for(int i = 0; i < (m + n); ++i)
        {
            nums1[i] = sorted[i];
        }
    }
};
